import 'dart:async';

import 'package:geolocator/geolocator.dart';
import 'package:syria_sports/core/utils/show_toast.dart';
//import 'package:location/location.dart' as loc;

class LocationHelper {

  static Future<bool> handleLocationPermission() async {
    bool serviceEnabled;
    LocationPermission permission;

    serviceEnabled = await Geolocator.isLocationServiceEnabled();

    if (!serviceEnabled) {
      Geolocator.openLocationSettings();
      //showErrorMessage(message: 'الرجاء تفعيل خدمة تحديد الموقع!');
      return false;
    }
    permission = await Geolocator.checkPermission();
    if (permission == LocationPermission.denied) {
      permission = await Geolocator.requestPermission();
      if (permission == LocationPermission.denied) {
        showErrorMessage(message: 'تم رفض صلاحيات الوصول للموقع');
        return false;
      }
    }
    if (permission == LocationPermission.deniedForever) {
      showErrorMessage(message: 'تم رفض صلاحيات الوصول للموقع بشكل نهائي لن نستطيع تحديد موقعك الرجاء إعادة تفعيلها من جديد!');
      Geolocator.openAppSettings();
      return false;
    }
    return true;
  }
  static Future<Position?> getLocation() async {
   if (await handleLocationPermission()){
     final position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
     return position;
   }
    return null;
  }

  Future<bool> requestPermission() async {
    final permission = await Geolocator.checkPermission();
    if (permission == LocationPermission.denied) {
      final permissionStatus = await Geolocator.requestPermission();
      return permissionStatus == LocationPermission.whileInUse || permissionStatus == LocationPermission.always;
    } else {
      return permission == LocationPermission.whileInUse || permission == LocationPermission.always;
    }
  }
  // دالة للتحقق مما إذا كانت المسافة بين نقطتين أقل من 4 كيلومترات
  static bool isWithinFourKm(Position myLocation, double gymLatitude, double gymLongitude) {
    // حساب المسافة بين الموقعين
    double distanceInMeters = Geolocator.distanceBetween(
      myLocation.latitude,
      myLocation.longitude,
      gymLatitude,
      gymLongitude,
    );

    // تحويل المسافة من متر إلى كيلومتر والتحقق إذا كانت أقل من 4 كم
    return (distanceInMeters / 1000) < 4;
  }
}